package parttwo.homework;

import java.util.Scanner;

/**
 * 编程思路
 * 1. 定义长度为16的整形二维数组。
 * 2.进行数组初始化。
 * 第一次尝试通过双层for循环输入二维数组的每一个值，后面发现需要输入 16*16次，次数过高。
 * 题目中说明可以指定值，便使用1,2,3 ---- 16*16  初始化二维数组从左至右 从上到下的每一个值。
 * 但是为了好验证，还是指定每个值为1.
 * 3.将二维数组所有行与列相加，使用双层for循环。
 * 4.左上角到右下角所有的累加和，意味着取得每行值的列下标不能超过行下标。
 * 5.同样可得，右上角到左下角的累加和，是第i行取值下标与第j列的下标之和大于等于15
 */
public class Arrays {
    public static void main(String[] args) {
//        1第一步定义一个长度为16二维数组。
        int[][] arr = new int[16][16];
//        2第二步 初始化数组的值都为1
        int num = 1;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = 1;
                num++;
            }
        }
//        第三步 打印数组所有值之和
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                count += arr[i][j];
            }
        }
        System.out.println("数组所有的值为："+count);

//        第四步 左上角到右下角所有的累加和
        int count1 = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j <= 15 - i; j++) {
                    count1 += arr[i][j];
            }
        }
        System.out.println("数组所有的值为："+count1);
//        第五步 右上角到左下角的累加和
        int count2 = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j<arr[i].length; j++) {
                if (i+j>=15){
                    count2 += arr[i][j];
                }
            }
        }
        System.out.println("数组所有的值为："+count2);
    }
}
